﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using EpsiRisk.MoteurJeu;


namespace EpsiRisk.AffichageJeu
{
    public class ClassZoneSelectionAttaquant : ClassZoneContextuelle
    {
        static Texture2D spriteLancerAttaque;
        ClassBouton boutonLancerAttaque;

        ClassBouton bouton1soldat;
        static Texture2D sprite1soldat;
        static Texture2D sprite1soldatActif;

        ClassBouton bouton2soldat;
        static Texture2D sprite2soldat;
        static Texture2D sprite2soldatActif;

        ClassBouton bouton3soldat;
        static Texture2D sprite3soldat;
        static Texture2D sprite3soldatActif;

        public void nbSoldatsDefaut()
        {
            nbAttaquantsSelectionne = 1;
        }

        private int nbAttaquantsSelectionne
        {
            get
            {
                if (bouton1soldat.active)
                {
                    return 1;
                }
                else if (bouton2soldat.active)
                {
                    return 2;
                }
                else if (bouton3soldat.active)
                {
                    return 3;
                }
                else
                {
                    Console.WriteLine("/!\\ : Etat des boutons  incohérent !!");
                    return 1; //valeur par default
                }
            }
            set
            {
                switch (value)
                {
                    case 1:
                        bouton1soldat.active = true;
                        bouton2soldat.active = false;
                        bouton3soldat.active = false;
                        break;
                    case 2:
                        bouton1soldat.active = false;
                        bouton2soldat.active = true;
                        bouton3soldat.active = false;
                        break;
                    case 3:
                        bouton1soldat.active = false;
                        bouton2soldat.active = false;
                        bouton3soldat.active = true;
                        break;
                    default:
                        Console.WriteLine("Nbre d'attaquants invalide");
                        break;
                }
            }
        }


        internal override void Draw(SpriteBatch spriteBatch)
        {
            base.Draw(spriteBatch);
            spriteBatch.Begin();
            spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, "Pays Attaquant : ", new Vector2(position.X + 100, position.Y + 6), Color.Red);
            if (ClassEtatPartie.sousTerritoireSelectionne != null)
            {
                string tmp = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(ClassEtatPartie.sousTerritoireSelectionne.Nom));
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, tmp, new Vector2(position.X + 260, position.Y + 6), Color.Red);
            }
            else
            {
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, "Aucun", new Vector2(position.X + 260, position.Y + 6), Color.Red);
            }
            spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, "Pays Defenseur : ", new Vector2(position.X + 100, position.Y + 26), Color.Red);
            if (ClassEtatPartie.sousTerritoireSelectionneBis != null)
            {
                string tmp = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.GetEncoding(1251).GetBytes(ClassEtatPartie.sousTerritoireSelectionneBis.Nom));
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, tmp, new Vector2(position.X + 260, position.Y + 26), Color.Red);
            }
            else
            {
                spriteBatch.DrawString(ClassDonneesGlobales.SpriteTxt, "Aucun", new Vector2(position.X + 260, position.Y + 26), Color.Red);
            }
            spriteBatch.End();
        }


        internal override void initialiser(Microsoft.Xna.Framework.Content.ContentManager content)
        {
            //Bouton attaquer
            spriteLancerAttaque = content.Load<Texture2D>("Sprites/SpriteAttaquer");
            boutonLancerAttaque = new ClassBouton(spriteLancerAttaque);
            boutonLancerAttaque.position = new Vector2(260, 50);
            boutonLancerAttaque.width = 129;
            boutonLancerAttaque.height = 33;
            boutonLancerAttaque.Clicked += new EventHandler(boutonValider_Clicked);
            this.AddBouton(boutonLancerAttaque);

            //bouton 1 soldat
            sprite1soldat = content.Load<Texture2D>("Sprites/1soldat");
            sprite1soldatActif = content.Load<Texture2D>("Sprites/1soldat-actif");
            bouton1soldat = new ClassBouton(sprite1soldatActif, sprite1soldat);
            bouton1soldat.position = new Vector2(10, 10);
            bouton1soldat.width = 82;
            bouton1soldat.height = 22;
            bouton1soldat.Clicked += new EventHandler(bouton1soldat_Clicked);
            this.AddBouton(bouton1soldat);

            //bouton 2 soldats
            sprite2soldat = content.Load<Texture2D>("Sprites/2soldat");
            sprite2soldatActif = content.Load<Texture2D>("Sprites/2soldat-actif");
            bouton2soldat = new ClassBouton(sprite2soldatActif, sprite2soldat);
            bouton2soldat.position = new Vector2(10, 36);
            bouton2soldat.width = 82;
            bouton2soldat.height = 22;
            bouton2soldat.Clicked += new EventHandler(bouton2soldat_Clicked);
            this.AddBouton(bouton2soldat);

            //bouton 3 soldats
            sprite3soldat = content.Load<Texture2D>("Sprites/3soldat");
            sprite3soldatActif = content.Load<Texture2D>("Sprites/3soldat-actif");
            bouton3soldat = new ClassBouton(sprite3soldatActif, sprite3soldat);
            bouton3soldat.position = new Vector2(10, 62);
            bouton3soldat.width = 82;
            bouton3soldat.height = 22;
            bouton3soldat.Clicked += new EventHandler(bouton3soldat_Clicked);
            this.AddBouton(bouton3soldat);
        }

        void bouton3soldat_Clicked(object sender, EventArgs e)
        {
            nbAttaquantsSelectionne = 3;
        }

        void bouton2soldat_Clicked(object sender, EventArgs e)
        {
            nbAttaquantsSelectionne = 2;
        }

        void bouton1soldat_Clicked(object sender, EventArgs e)
        {
            nbAttaquantsSelectionne = 1;
        }

        void boutonValider_Clicked(object sender, EventArgs e)
        {
            ClassPhaseAttaque.NbAttaquants = nbAttaquantsSelectionne;
            ClassPhaseAttaque.attaque();
        }


        internal override void clicXY(int x, int y)
        {
            base.clicXY(x, y);
        }
    }
}
